home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #3 / Amiga Plus CD - 2002 - No. 03.iso / AmigaPlus / Tools / Development / envCPP31 / c++ / tools / cprefs / source / defs.h < prev    next >
Encoding:
C/C++ Source or Header  |  2002-01-01  |  36.7 KB  |  1,941 lines

  1. /// "compilers"
  2.  
  3. #ifdef __SASC
  4.  
  5. #define __USE_SYSBASE
  6. #define __geta4            __saveds
  7. #define __stkargs          __stdargs
  8. #define __COMMODORE_DATE__ __AMIGADATE__
  9.  
  10. #define __A0         register __a0
  11. #define __A1         register __a1
  12. #define __A2         register __a2
  13. #define __A3         register __a3
  14. #define __A4         register __a4
  15. #define __A5         register __a5
  16. #define __A6         register __a6
  17. #define __A7         register __a7
  18. #define __D0         register __d0
  19. #define __D1         register __d1
  20. #define __D2         register __d2
  21. #define __D3         register __d3
  22. #define __D4         register __d4
  23. #define __D5         register __d5
  24. #define __D6         register __d6
  25. #define __D7         register __d7
  26.  
  27. #endif
  28.  
  29. #ifdef _DCC
  30.  
  31. #define __asm
  32.  
  33. #endif
  34.  
  35. ///
  36. /// "includes"
  37.  
  38. #define Prototype extern
  39. #define Local     static
  40.  
  41. // system includes
  42.  
  43. #include <ctype.h>
  44. #include <stdlib.h>
  45. #include <string.h>
  46. #include <stdio.h>
  47. #include <stdarg.h>
  48. #include <datatypes/textclass.h>
  49. #include <dos/dos.h>
  50. #include <dos/dostags.h>
  51. #include <dos/rdargs.h>
  52. #include <exec/exec.h>
  53. #include <graphics/gfxmacros.h>
  54. #include <intuition/cghooks.h>
  55. #include <intuition/classes.h>
  56. #include <intuition/classusr.h>
  57. #include <intuition/gadgetclass.h>
  58. #include <intuition/icclass.h>
  59. #include <intuition/intuition.h>
  60. #include <intuition/intuitionbase.h>
  61. #include <intuition/sghooks.h>
  62. #include <intuition/sghooks.h>
  63. #include <libraries/asl.h>
  64. #include <libraries/gadtools.h>
  65. #include <libraries/iffparse.h>
  66. #include <utility/hooks.h>
  67. #include <utility/tagitem.h>
  68. #include <workbench/workbench.h>
  69.  
  70. // prototypes
  71.  
  72. #include <clib/diskfont_protos.h>
  73. #include <clib/dos_protos.h>
  74. #include <clib/exec_protos.h>
  75. #include <clib/gadtools_protos.h>
  76. #include <clib/graphics_protos.h>
  77. #include <clib/intuition_protos.h>
  78. #include <clib/utility_protos.h>
  79. #include <clib/asl_protos.h>
  80.  
  81. #ifdef _DCC
  82.     #include "alib_protos.h"
  83. #else
  84.     #include <clib/alib_protos.h>
  85. #endif
  86.  
  87. // pragmas
  88.  
  89. #ifdef __SASC
  90.  
  91. #include <pragmas/diskfont_pragmas.h>
  92. #include <pragmas/dos_pragmas.h>
  93. #include <pragmas/exec_sysbase_pragmas.h>
  94. #include <pragmas/gadtools_pragmas.h>
  95. #include <pragmas/graphics_pragmas.h>
  96. #include <pragmas/intuition_pragmas.h>
  97. #include <pragmas/utility_pragmas.h>
  98. #include <pragmas/asl_pragmas.h>
  99.  
  100. #endif
  101.  
  102. // note: TARGET_XYZ normally is defined in the makefile
  103.  
  104. #ifndef TARGET_GCC
  105.     #ifndef TARGET_VBCC
  106.         #define TARGET_GCC
  107.     #endif
  108. #endif
  109.  
  110. #ifdef TARGET_GCC
  111.     #include "sas/gcc/prog-protos.h"
  112.     #include "gccprefs.h"
  113. #endif
  114.  
  115. #ifdef TARGET_VBCC
  116.     #include "sas/vbcc/prog-protos.h"
  117.     #include "vbccprefs.h"
  118. #endif
  119.  
  120. ///
  121. /// "boopsi"
  122.  
  123. /* ------------------------------- BoopsiContext -------------------------------
  124.  
  125.  BOOPSI class context
  126.  
  127. */
  128.  
  129. struct BoopsiContext
  130. {
  131.     struct IClass       *IClass;                     // class pointer
  132. };
  133.  
  134. /* ------------------------------- BoopsiDevice --------------------------------
  135.  
  136.  BOOPSI device context
  137.  
  138. */
  139.  
  140. struct BoopsiDevice
  141. {
  142.     struct Screen       *Screen;                     // screen to appear on
  143.     struct TextFont     *Font;                       // font for gadgets
  144.     UWORD                Spacing[256];               // font metrics
  145.     LONG                 PenBackground;              // pen
  146.     LONG                 PenShine;                   // pen
  147.     LONG                 PenShadow;                  // pen
  148.     LONG                 Pen3DShadow;                // pen
  149.     LONG                 Pen3DShine;                 // pen
  150.     LONG                 PenInactive;                // pen
  151.     BOOL                 ReleasePen3DShadow;         // shared pen ?
  152.     BOOL                 ReleasePen3DShine;          // shared pen ?
  153.     BOOL                 ReleasePenInactive;         // shared pen ?
  154. };
  155.  
  156. /* --------------------------------- BoopsiBox ---------------------------------
  157.  
  158.  Rectangle
  159.  
  160. */
  161.  
  162. struct BoopsiBox
  163. {
  164.     UWORD Left;                                      // position
  165.     UWORD Top;                                       // position
  166.     UWORD Width;                                     // dimensions
  167.     UWORD Height;                                    // dimensions
  168. };
  169.  
  170. /* ------------------------------- BoopsiGadget --------------------------------
  171.  
  172.  BOOPSI gadget data
  173.  
  174. */
  175.  
  176. struct BoopsiGadget
  177. {
  178.     UWORD                Kind;                       // gadget kind
  179.     struct BoopsiDevice *Device;                     // rendering context
  180.     UWORD                LeftEdge;                   // position
  181.     UWORD                TopEdge;                    // position
  182.     UWORD                Width;                      // dimensions
  183.     UWORD                Height;                     // dimensions
  184.     UWORD                DashedX;                    // focus box position
  185.     UWORD                DashedY;                    // focus box position
  186.     UWORD                DashedW;                    // focus box dimensions
  187.     UWORD                DashedH;                    // focus box dimensions
  188.     UWORD                Placetext;                  // label placement
  189.     ULONG                Flags;                      // flags
  190.     UWORD                State;                      // state (active ?)
  191.     BOOL                 Disabled;                   // disabled ?
  192.     UBYTE              **Labels;                     // labels, if any
  193.     UWORD                Active;                     // active value
  194.     UWORD                Maximum;                    // maximum  value
  195.     ULONG                Refresh;                    // refresh request
  196.     struct Window       *Window;                     // pop-up window
  197.     UWORD                Entries;                    // pop-up window entries
  198.     UWORD                Selection;                  // pop-up window cursor position
  199.     struct Rectangle    *Rectangles;                 // pop-up window layout
  200. };
  201.  
  202. // gadget types (BoopsiGadget->Kind)
  203.  
  204. enum
  205. {
  206.     BOOPSI_DROPBOX_KIND = 32,
  207.     BOOPSI_BUTTON_KIND
  208. };
  209.  
  210. // gadget states (BoopsiGadget->State)
  211.  
  212. #define BOOPSI_STATE_INACTIVE        (0)             // gadget is inactive
  213. #define BOOPSI_STATE_ACTIVE          (1L<<0)         // gadget is active
  214. #define BOOPSI_STATE_SELECTED        (1L<<1)         // gadget is selected (recessed)
  215. #define BOOPSI_STATE_POPUP           (1L<<2)         // gadget is showing pop-up window
  216.  
  217. // gadget flags (BoopsiGadget->Flags)
  218.  
  219. #define BOOPSI_FLAGS_CAPTUREFOCUS    (1L<<0)
  220. #define BOOPSI_FLAGS_GACTIMMEDIATE   (1L<<1)
  221. #define BOOPSI_FLAGS_FANCY           (1L<<2)
  222.  
  223. // refresh flags (BoopsiGadget->Refresh)
  224.  
  225. #define BOOPSI_REFRESHBACKGROUND     (1L<<0)         // render gadget background
  226. #define BOOPSI_REFRESHGHOSTING       (1L<<1)         // render ghosting
  227. #define BOOPSI_REFRESHBUTTON         (1L<<2)         // render frame
  228. #define BOOPSI_REFRESHLABEL          (1L<<3)         // render label
  229. #define BOOPSI_REFRESHACTIVE         (1L<<4)         // render active caption
  230. #define BOOPSI_REFRESHFOCUS          (1L<<5)         // render focus indicator
  231. #define BOOPSI_REFRESHDROPBOX        (1L<<6)         // render drop-down box
  232. #define BOOPSI_REFRESHALL            (0xffffffff)    // render complete gadget
  233.  
  234. // supported tags for set/get
  235.  
  236. #define BOOPSI_TAG_BASE (TAG_USER + 0x80100)
  237.  
  238. enum
  239. {
  240.     BOOPSI_ATTRIB_KIND = (int)BOOPSI_TAG_BASE,
  241.     BOOPSI_ATTRIB_DEVICE,
  242.     BOOPSI_ATTRIB_PLACEMENT,
  243.     BOOPSI_ATTRIB_FLAGS,
  244.     BOOPSI_ATTRIB_ADDRESS
  245. };
  246.  
  247. // bevelbox rendering modes
  248.  
  249. #define BOOPSI_BEVELBOXMODE_RAISED   (1L<<0)
  250. #define BOOPSI_BEVELBOXMODE_RECESSED (1L<<1)
  251. #define BOOPSI_BEVELBOXMODE_SOLID    (1L<<2)
  252. #define BOOPSI_BEVELBOXMODE_ERASE    (1L<<3)
  253. #define BOOPSI_BEVELBOXMODE_DASHED   (1L<<4)
  254. #define BOOPSI_BEVELBOXMODE_THIN     (1L<<5)
  255. #define BOOPSI_BEVELBOXMODE_AMIGA    (1L<<6)
  256.  
  257. ///
  258. /// "defines"
  259.  
  260. // constants
  261.  
  262. #define MAX_PATHLEN     511                          // maximum length of path/file names
  263. #define MAX_NAME        80                           // maximum length of option names
  264. #define MAX_SCREEN      127                          // maximum length of screen names
  265. #define MAX_GADGETS     32                           // maximum number of gadgets per window
  266. #define UNDEFINED       ((UWORD)~0)                  // undefined value
  267. #define SPACING_X       4                            // spacing in pop-up menu
  268. #define SPACING_Y       2                            // spacing in pop-up menu
  269.  
  270. #ifdef TARGET_GCC
  271.  
  272.     #define PROGRAMNAME "gccprefs"
  273.     #define OPTIONS     "gcc.options"
  274.  
  275. #endif
  276.  
  277. #ifdef TARGET_VBCC
  278.  
  279.     #define PROGRAMNAME "vbccprefs"
  280.     #define OPTIONS     "vbcc.options"
  281.  
  282. #endif
  283.  
  284. // macros
  285.  
  286. #define MEMSIZE(a) (*((ULONG *)(a) - 1) - 4)         // size of memory block allocated with AllocVec()
  287.  
  288. // supported option types (Value->Type)
  289.  
  290. enum VALUE_TYPE
  291. {
  292.     VALUE_NUMBER,                                    // integer value
  293.     VALUE_STRING,                                    // 0-terminated string
  294.     VALUE_NUMERIC,                                   // 0-terminated string (digits only)
  295.     VALUE_LIST                                       // linked list
  296. };
  297.  
  298. // supported rule states (Syntax->Status)
  299.  
  300. enum
  301. {
  302.     SYNTAX_ACTIVE,
  303.     SYNTAX_INACTIVE
  304. };
  305.  
  306. // gadget action types
  307.  
  308. enum GADGET_ACTION
  309. {
  310.     ACTION_NOP,
  311.     ACTION_ADD,
  312.     ACTION_DEL,
  313.     ACTION_EDIT,
  314.     ACTION_REFRESH,
  315.     ACTION_POP,
  316.     ACTION_REQFILE,
  317.     ACTION_REQFILENAME,
  318.     ACTION_REQFOLDER
  319. };
  320.  
  321. // menu items
  322.  
  323. enum
  324. {
  325.     MENU_RESET,
  326.     MENU_RESETPAGE,
  327.     MENU_ABOUT
  328. };
  329.  
  330. // load modes
  331.  
  332. enum
  333. {
  334.     LOADMODE_MERGE,
  335.     LOADMODE_REPLACE
  336. };
  337.  
  338. ///
  339. /// "defines (gcc)"
  340.  
  341. #ifdef TARGET_GCC
  342.  
  343. // page identifiers (WindowSupportInfo->Page)
  344.  
  345. enum PAGE_ID
  346. {
  347.     PAGE_INDEX,
  348.     PAGE_COMPILER,
  349.     PAGE_MESSAGES,
  350.     PAGE_LANGUAGE,
  351.     PAGE_OPTIMIZER,
  352.     PAGE_LINKER,
  353.     PAGE_SPECIAL,
  354.     PAGE_PPC,
  355.     PAGE_DEBUGGER,
  356.     PAGE_CPLUSPLUS,
  357.     PAGE_INLINE,
  358.     PAGE_DETAILS,
  359.     PAGE_PREPROCESSOR,
  360.     PAGE_M68K,
  361.  
  362.     // pages end here
  363.  
  364.     PAGE_MAXIMUM
  365. };
  366.  
  367. // supported options
  368.  
  369. enum GCC_OPTIONS
  370. {
  371.     // PAGE_COMPILER
  372.  
  373.     OPTION_GLOBALINCLUDES,
  374.     OPTION_LOCALINCLUDES,
  375.     OPTION_COMPILE,
  376.     OPTION_ASSEMBLE,
  377.     OPTION_INTERMEDIATEFILES,
  378.     OPTION_SPECSFILE,
  379.     OPTION_DELETEINTERMEDIATE,
  380.     OPTION_AUTODETECT,
  381.     OPTION_STDINCLUDES,
  382.  
  383.     // PAGE_CPLUSPLUS
  384.  
  385.     OPTION_ACCESSCONTROL,
  386.     OPTION_CHECKNEW,
  387.     OPTION_ACCEPTDOLLAR,
  388.     OPTION_FORSCOPE,
  389.     OPTION_GNUKEYWORDS,
  390.     OPTION_SIGNATURES,
  391.     OPTION_STDNAMESPACE,
  392.     OPTION_MANGLING,
  393.     OPTION_OPERATORNAMES,
  394.     OPTION_RTTI,
  395.     OPTION_STRICTPROTOS,
  396.     OPTION_LONGMANGLING,
  397.     OPTION_ASSIGNTOTHIS,
  398.  
  399.     // PAGE_DEBUGGER
  400.  
  401.     OPTION_DEBUG,
  402.     OPTION_PROFILE,
  403.     OPTION_PROFILEBLOCKS,
  404.     OPTION_ARCS,
  405.     OPTION_COVERAGE,
  406.     OPTION_DEBUGLEVEL,
  407.  
  408.     // PAGE_DETAILS
  409.  
  410.     OPTION_STRENGTHREDUCE,
  411.     OPTION_THREADJUMPS,
  412.     OPTION_CSEFOLLOWJUMPS,
  413.     OPTION_CSESKIPBLOCKS,
  414.     OPTION_FUNCTIONCSE,
  415.     OPTION_RERUNCSE,
  416.     OPTION_RERUNLOOPOPT,
  417.     OPTION_GLOBALCSEPASS,
  418.     OPTION_OPTIMIZEMOVE,
  419.     OPTION_DELAYEDBRANCH,
  420.     OPTION_SEPARATEFUNCS,
  421.     OPTION_SEPARATEDATA,
  422.     OPTION_UNROLLLOOPS,
  423.     OPTION_UNROLLALLLOOPS,
  424.     OPTION_MOVEMOVEABLE,
  425.     OPTION_REDUCEALLVARS,
  426.     OPTION_BRANCHPROBABILITY,
  427.     OPTION_KEEPCONST,
  428.  
  429.     // PAGE_INDEX
  430.  
  431.     OPTION_VERBOSE,
  432.     OPTION_LINK,
  433.     OPTION_TARGET,
  434.  
  435.     // PAGE_INLINE
  436.  
  437.     OPTION_INLINECLASS,
  438.     OPTION_INLINEDIRECTIVE,
  439.     OPTION_DELETEINLINED,
  440.     OPTION_AUTOINLINE,
  441.     OPTION_INLINELIMIT,
  442.  
  443.     // PAGE_LANGUAGE
  444.  
  445.     OPTION_ANSI,
  446.     OPTION_LANGUAGE,
  447.     OPTION_INLINEASM,
  448.     OPTION_BUILTIN,
  449.     OPTION_FREESTANDING,
  450.     OPTION_TRIGRAPHS,
  451.     OPTION_TRADITIONAL,
  452.     OPTION_CHAR,
  453.     OPTION_BITFIELD,
  454.     OPTION_CONSTSTRINGS,
  455.     OPTION_PROMOTEDOUBLE,
  456.  
  457.     // PAGE_LINKER
  458.  
  459.     OPTION_OBJECTS,
  460.     OPTION_LIBPATHS,
  461.     OPTION_STARTUPCODE,
  462.     OPTION_STDLIBS,
  463.     OPTION_DEFAULTLIBS,
  464.     OPTION_STRIPSYMBOLS,
  465.     OPTION_DYNAMICLINKING,
  466.     OPTION_SHAREDOBJ,
  467.     OPTION_SYMBOLICREFS,
  468.     OPTION_IXEMUL,
  469.  
  470.     // PAGE_M68K
  471.  
  472.     OPTION_M68KFPU,
  473.     OPTION_CPU,
  474.     OPTION_M68KSOFTFLOAT,
  475.     OPTION_M68KLONGINT,
  476.     OPTION_M68KRTS,
  477.     OPTION_M68KALIGN,
  478.     OPTION_M68KFARCODE,
  479.     OPTION_M68KFARDATA,
  480.     OPTION_M68KSTACKCHECK,
  481.     OPTION_M68KSTACKEXTEND,
  482.     OPTION_M68KRELOADA4,
  483.     OPTION_M68KPARMS,
  484.  
  485.     // PAGE_MESSAGES
  486.  
  487.     OPTION_ENABLED,
  488.     OPTION_DISABLED,
  489.     OPTION_PEDANTIC,
  490.     OPTION_WARNINGS,
  491.     OPTION_EXTRAWARNINGS,
  492.     OPTION_ABORT,
  493.     OPTION_PERMISSIVECPP,
  494.     OPTION_DIAGNOSTICS,
  495.  
  496.     // PAGE_OPTIMIZER
  497.  
  498.     OPTION_FASTCONSTRUCTOR,
  499.     OPTION_IMPLICITETEMPLATES,
  500.     OPTION_OPTIMIZE,
  501.     OPTION_FLOATSINFPU,
  502.     OPTION_DEFERPOP,
  503.     OPTION_COPYOPERANDS,
  504.     OPTION_COPYPOINTERS,
  505.     OPTION_FRAMEPOINTER,
  506.     OPTION_FASTMATH,
  507.     OPTION_SAVEREGISTERS,
  508.     OPTION_PEEPHOLE,
  509.     OPTION_SCHEDULER,
  510.     OPTION_EXPENSIVEOPT,
  511.     OPTION_ALIASING,
  512.  
  513.     // PAGE_PPC
  514.  
  515.     OPTION_PPCBITALIGN,
  516.     OPTION_PPCRELOCATABLE,
  517.     OPTION_PPCFULLTOC,
  518.     OPTION_PPCFMADD,
  519.     OPTION_PPCABI,
  520.     OPTION_PPCFPU,
  521.     OPTION_PPCSTRICTALIGN,
  522.     OPTION_PPCRELOCATABLELIB,
  523.     OPTION_PPCTOC,
  524.     OPTION_PPCENDIAN,
  525.     OPTION_PPCCALL,
  526.     OPTION_PPCPROTOTYPED,
  527.     OPTION_PPCEABI,
  528.     OPTION_PPCDATA,
  529.  
  530.     // PAGE_PREPROCESSOR
  531.  
  532.     OPTION_STRIPCOMMENTS,
  533.     OPTION_DEFINEMACROS,
  534.     OPTION_LINENUMBERS,
  535.     OPTION_DEFINES,
  536.     OPTION_UNDEFINES,
  537.     OPTION_TRADITIONALCPP,
  538.  
  539.     // PAGE_SPECIAL
  540.  
  541.     OPTION_OPTIONS,
  542.  
  543.     // options end here
  544.  
  545.     OPTIONS_MAXIMUM
  546. };
  547.  
  548. // possible values for various options
  549.  
  550. enum
  551. {
  552.     VAL_COMPILE_COMPILE,
  553.     VAL_COMPILE_PREPROCESSONLY,
  554. };
  555.  
  556. enum
  557. {
  558.     VAL_ASSEMBLE_ASSEMBLE,
  559.     VAL_ASSEMBLE_NOASSEMBLE,
  560. };
  561.  
  562. enum
  563. {
  564.     VAL_INTERMEDIATEFILES_INTERMEDIATEFILES,
  565.     VAL_INTERMEDIATEFILES_USEPIPE,
  566. };
  567.  
  568. enum
  569. {
  570.     VAL_DELETEINTERMEDIATE_DELETEINTERMEDIATE,
  571.     VAL_DELETEINTERMEDIATE_SAVEINTERMEDIATE,
  572. };
  573.  
  574. enum
  575. {
  576.     VAL_AUTODETECT_DEFAULT,
  577.     VAL_AUTODETECT_AUTODETECTTYPE,
  578.     VAL_AUTODETECT_C,
  579.     VAL_AUTODETECT_OBJECTIVEC,
  580.     VAL_AUTODETECT_CPLUSPLUS,
  581.     VAL_AUTODETECT_HEADER,
  582.     VAL_AUTODETECT_PREPROCESSEDC,
  583.     VAL_AUTODETECT_PREPROCESSEDCPLUSPLUS,
  584.     VAL_AUTODETECT_ASSEMBLER,
  585.     VAL_AUTODETECT_ASSEMBLERWCPP
  586. };
  587.  
  588. enum
  589. {
  590.     VAL_STDINCLUDES_INCLUDES,
  591.     VAL_STDINCLUDES_NOSTDINCLUDES,
  592. };
  593.  
  594. enum
  595. {
  596.     VAL_ACCESSCONTROL_DEFAULT,
  597.     VAL_ACCESSCONTROL_ACCESSCONTROL,
  598.     VAL_ACCESSCONTROL_NOACCESSCONTROL
  599. };
  600.  
  601. enum
  602. {
  603.     VAL_CHECKNEW_DEFAULT,
  604.     VAL_CHECKNEW_NOCHECKNEW,
  605.     VAL_CHECKNEW_CHECKNEW,
  606. };
  607.  
  608. enum
  609. {
  610.     VAL_ACCEPTDOLLAR_DEFAULT,
  611.     VAL_ACCEPTDOLLAR_ACCEPTDOLLAR,
  612.     VAL_ACCEPTDOLLAR_NOACCEPTDOLLAR
  613. };
  614.  
  615. enum
  616. {
  617.     VAL_FORSCOPE_DEFAULT,
  618.     VAL_FORSCOPE_FORLOOPSCOPE,
  619.     VAL_FORSCOPE_NOFORLOOPSCOPE
  620. };
  621.  
  622. enum
  623. {
  624.     VAL_GNUKEYWORDS_DEFAULT,
  625.     VAL_GNUKEYWORDS_GNUKEYWORDS,
  626.     VAL_GNUKEYWORDS_NOGNUKEYWORDS
  627. };
  628.  
  629. enum
  630. {
  631.     VAL_SIGNATURES_DEFAULT,
  632.     VAL_SIGNATURES_NOSIGNATURES,
  633.     VAL_SIGNATURES_HANDLESIGNATURES
  634. };
  635.  
  636. enum
  637. {
  638.     VAL_STDNAMESPACE_DEFAULT,
  639.     VAL_STDNAMESPACE_IGNORESTDNAMESPACE,
  640.     VAL_STDNAMESPACE_NOIGNORESTDNAMESPACE
  641. };
  642.  
  643. enum
  644. {
  645.     VAL_MANGLING_DEFAULT,
  646.     VAL_MANGLING_NEW,
  647.     VAL_MANGLING_OLD
  648. };
  649.  
  650. enum
  651. {
  652.     VAL_OPERATORNAMES_DEFAULT,
  653.     VAL_OPERATORNAMES_NOOPERATORNAMES,
  654.     VAL_OPERATORNAMES_OPERATORNAMES
  655. };
  656.  
  657. enum
  658. {
  659.     VAL_RTTI_DEFAULT,
  660.     VAL_RTTI_RTTI,
  661.     VAL_RTTI_NORTTI
  662. };
  663.  
  664. enum
  665. {
  666.     VAL_STRICTPROTOS_DEFAULT,
  667.     VAL_STRICTPROTOS_NOSTRICTPROTOS,
  668.     VAL_STRICTPROTOS_STRICTPROTOS
  669. };
  670.  
  671. enum
  672. {
  673.     VAL_LONGMANGLING_DEFAULT,
  674.     VAL_LONGMANGLING_LONGNAMEMANGLING,
  675.     VAL_LONGMANGLING_COMPRESSEDMANGLING
  676. };
  677.  
  678. enum
  679. {
  680.     VAL_ASSIGNTOTHIS_DEFAULT,
  681.     VAL_ASSIGNTOTHIS_NOASSIGNTOTHIS,
  682.     VAL_ASSIGNTOTHIS_ASSIGNTOTHIS
  683. };
  684.  
  685. enum
  686. {
  687.     VAL_DEBUG_NODEBUG,
  688.     VAL_DEBUG_DEBUG,
  689.     VAL_DEBUG_DEBUGGDB,
  690.     VAL_DEBUG_DEBUGSTABS,
  691.     VAL_DEBUG_DEBUGSTABSPLUS,
  692.     VAL_DEBUG_DEBUGCOFF,
  693.     VAL_DEBUG_DEBUGXCOFF,
  694.     VAL_DEBUG_DEBUGXCOFFPLUS,
  695.     VAL_DEBUG_DEBUGDWARF,
  696.     VAL_DEBUG_DEBUGDWARFPLUS,
  697.     VAL_DEBUG_DEBUGDWARF2
  698. };
  699.  
  700. enum
  701. {
  702.     VAL_PROFILE_NOPROFILE,
  703.     VAL_PROFILE_PROFILE,
  704.     VAL_PROFILE_PROFILEGPROF
  705. };
  706.  
  707. enum
  708. {
  709.     VAL_PROFILEBLOCKS_NOPROFILEBLOCKS,
  710.     VAL_PROFILEBLOCKS_PROFILEBLOCKS,
  711.     VAL_PROFILEBLOCKS_PROFILEBLOCKSEXTRA
  712. };
  713.  
  714. enum
  715. {
  716.     VAL_ARCS_DEFAULT,
  717.     VAL_ARCS_NOARCS,
  718.     VAL_ARCS_ARCS
  719. };
  720.  
  721. enum
  722. {
  723.     VAL_COVERAGE_DEFAULT,
  724.     VAL_COVERAGE_NOCOVERAGE,
  725.     VAL_COVERAGE_SAVECOVERAGEDATA
  726. };
  727.  
  728. enum
  729. {
  730.     VAL_DEBUGLEVEL_DEFAULT,
  731.     VAL_DEBUGLEVEL_DEBUGLEVEL1,
  732.     VAL_DEBUGLEVEL_DEBUGLEVEL2,
  733.     VAL_DEBUGLEVEL_DEBUGLEVEL3
  734. };
  735.  
  736. enum
  737. {
  738.     VAL_STRENGTHREDUCE_DEFAULT,
  739.     VAL_STRENGTHREDUCE_NOSTRENGTHREDUCE,
  740.     VAL_STRENGTHREDUCE_STRENGTHREDUCE
  741. };
  742.  
  743. enum
  744. {
  745.     VAL_THREADJUMPS_DEFAULT,
  746.     VAL_THREADJUMPS_NOTHREADJUMPS,
  747.     VAL_THREADJUMPS_THREADJUMPS
  748. };
  749.  
  750. enum
  751. {
  752.     VAL_CSEFOLLOWJUMPS_DEFAULT,
  753.     VAL_CSEFOLLOWJUMPS_NOCSEFOLLOWJUMPS,
  754.     VAL_CSEFOLLOWJUMPS_CSEFOLLOWJUMPS
  755. };
  756.  
  757. enum
  758. {
  759.     VAL_CSESKIPBLOCKS_DEFAULT,
  760.     VAL_CSESKIPBLOCKS_NOCSESKIPBLOCKS,
  761.     VAL_CSESKIPBLOCKS_CSESKIPBLOCKS
  762. };
  763.  
  764. enum
  765. {
  766.     VAL_FUNCTIONCSE_DEFAULT,
  767.     VAL_FUNCTIONCSE_FUNCTIONCSE,
  768.     VAL_FUNCTIONCSE_NOFUNCTIONCSE
  769. };
  770.  
  771. enum
  772. {
  773.     VAL_RERUNCSE_DEFAULT,
  774.     VAL_RERUNCSE_NORERUNCSE,
  775.     VAL_RERUNCSE_RERUNCSE
  776. };
  777.  
  778. enum
  779. {
  780.     VAL_RERUNLOOPOPT_DEFAULT,
  781.     VAL_RERUNLOOPOPT_NORERUNLOOPOPT,
  782.     VAL_RERUNLOOPOPT_RERUNLOOPOPTIMIZER
  783. };
  784.  
  785. enum
  786. {
  787.     VAL_GLOBALCSEPASS_DEFAULT,
  788.     VAL_GLOBALCSEPASS_NOGLOBALCSEPASS,
  789.     VAL_GLOBALCSEPASS_GLOBALCSEPASS
  790. };
  791.  
  792. enum
  793. {
  794.     VAL_OPTIMIZEMOVE_DEFAULT,
  795.     VAL_OPTIMIZEMOVE_NOOPTIMIZEMOVE,
  796.     VAL_OPTIMIZEMOVE_OPTIMIZEMOVE
  797. };
  798.  
  799. enum
  800. {
  801.     VAL_DELAYEDBRANCH_DEFAULT,
  802.     VAL_DELAYEDBRANCH_NODELAYEDBRANCH,
  803.     VAL_DELAYEDBRANCH_DELAYEDBRANCH
  804. };
  805.  
  806. enum
  807. {
  808.     VAL_SEPARATEFUNCS_DEFAULT,
  809.     VAL_SEPARATEFUNCS_NOSEPARATESECTIONS,
  810.     VAL_SEPARATEFUNCS_SEPARATESECTIONS,
  811. };
  812.  
  813. enum
  814. {
  815.     VAL_SEPARATEDATA_DEFAULT,
  816.     VAL_SEPARATEDATA_NOSEPARATESECTIONS,
  817.     VAL_SEPARATEDATA_SEPARATESECTIONS,
  818. };
  819.  
  820. enum
  821. {
  822.     VAL_UNROLLLOOPS_DEFAULT,
  823.     VAL_UNROLLLOOPS_NOUNROLLLOOPS,
  824.     VAL_UNROLLLOOPS_UNROLLLOOPS
  825. };
  826.  
  827. enum
  828. {
  829.     VAL_UNROLLALLLOOPS_DEFAULT,
  830.     VAL_UNROLLALLLOOPS_NOUNROLLALLLOOPS,
  831.     VAL_UNROLLALLLOOPS_UNROLLALLLOOPS,
  832. };
  833.  
  834. enum
  835. {
  836.     VAL_MOVEMOVEABLE_DEFAULT,
  837.     VAL_MOVEMOVEABLE_NOMOVEMOVEABLE,
  838.     VAL_MOVEMOVEABLE_MOVEMOVEABLE
  839. };
  840.  
  841. enum
  842. {
  843.     VAL_REDUCEALLVARS_DEFAULT,
  844.     VAL_REDUCEALLVARS_NOREDUCEALLVARS,
  845.     VAL_REDUCEALLVARS_REDUCEALLVARS,
  846. };
  847.  
  848. enum
  849. {
  850.     VAL_BRANCHPROBABILITY_DEFAULT,
  851.     VAL_BRANCHPROBABILITY_NOBRANCHPROBAB,
  852.     VAL_BRANCHPROBABILITY_BRANCHPROBABILITIES
  853. };
  854.  
  855. enum
  856. {
  857.     VAL_KEEPCONST_DEFAULT,
  858.     VAL_KEEPCONST_KEEPUNUSEDCONST,
  859.     VAL_KEEPCONST_DELETEUNUSEDCONST
  860. };
  861.  
  862. enum
  863. {
  864.     VAL_VERBOSE_DEFAULT,
  865.     VAL_VERBOSE_VERBOSE,
  866. };
  867.  
  868. enum
  869. {
  870.     VAL_OPTIMIZE_DEFAULT,
  871.     VAL_OPTIMIZE_OPTIMIZE,
  872.     VAL_OPTIMIZE_OPTIMIZEMORE,
  873.     VAL_OPTIMIZE_OPTIMIZEEVENMORE,
  874.     VAL_OPTIMIZE_OPTIMIZESIZE,
  875.     VAL_OPTIMIZE_NOOPTIMIZE
  876. };
  877.  
  878. enum
  879. {
  880.     VAL_LINK_LINK,
  881.     VAL_LINK_NOLINK,
  882. };
  883.  
  884. enum
  885. {
  886.     VAL_INLINECLASS_DEFAULT,
  887.     VAL_INLINECLASS_INLINECLASSFUNC,
  888.     VAL_INLINECLASS_NOINLINECLASSFUNC
  889. };
  890.  
  891. enum
  892. {
  893.     VAL_INLINEDIRECTIVE_DEFAULT,
  894.     VAL_INLINEDIRECTIVE_INLINEDIRECTIVE,
  895.     VAL_INLINEDIRECTIVE_IGNOREINLINEDIRECTIVE
  896. };
  897.  
  898. enum
  899. {
  900.     VAL_DELETEINLINED_DEFAULT,
  901.     VAL_DELETEINLINED_DELETEINLINEDFUNC,
  902.     VAL_DELETEINLINED_KEEPINLINEDFUNC
  903. };
  904.  
  905. enum
  906. {
  907.     VAL_AUTOINLINE_DEFAULT,
  908.     VAL_AUTOINLINE_NOAUTOMATICINLINE,
  909.     VAL_AUTOINLINE_INLINESMALLFUNCTIONS
  910. };
  911.  
  912. enum
  913. {
  914.     VAL_ANSI_NOANSICCOMPILER,
  915.     VAL_ANSI_ANSICCOMPILER
  916. };
  917.  
  918. enum
  919. {
  920.     VAL_LANGUAGE_DEFAULT,
  921.     VAL_LANGUAGE_LANGUAGEGNU89,
  922.     VAL_LANGUAGE_LANGAUGEGNU9X,
  923.     VAL_LANGUAGE_LANGUAGEC89,
  924.     VAL_LANGUAGE_LANGUAGEC9X,
  925.     VAL_LANGUAGE_LANGUAGEISO98991990,
  926.     VAL_LANGUAGE_LANGUAGEISO98991994,
  927.     VAL_LANGUAGE_LANGUAGEISO9899199X
  928. };
  929.  
  930. enum
  931. {
  932.     VAL_INLINEASM_DEFAULT,
  933.     VAL_INLINEASM_INLINEASM,
  934.     VAL_INLINEASM_NOINLINEASM
  935. };
  936.  
  937. enum
  938. {
  939.     VAL_BUILTIN_DEFAULT,
  940.     VAL_BUILTIN_BUILTINFUNCTIONS,
  941.     VAL_BUILTIN_NOBUILTINFUNCTIONS
  942. };
  943.  
  944. enum
  945. {
  946.     VAL_FREESTANDING_DEFAULT,
  947.     VAL_FREESTANDING_HOSTED,
  948.     VAL_FREESTANDING_FREESTANDING
  949. };
  950.  
  951. enum
  952. {
  953.     VAL_TRIGRAPHS_NOTRIGRAPHS,
  954.     VAL_TRIGRAPHS_TRIGRAPHS
  955. };
  956.  
  957. enum
  958. {
  959.     VAL_TRADITIONAL_NOTRADITIONALC,
  960.     VAL_TRADITIONAL_TRADIONALC
  961. };
  962.  
  963. enum
  964. {
  965.     VAL_CHAR_DEFAULT,
  966.     VAL_CHAR_SIGNEDCHAR,
  967.     VAL_CHAR_UNSIGNEDCHAR
  968. };
  969.  
  970. enum
  971. {
  972.     VAL_BITFIELD_DEFAULT,
  973.     VAL_BITFIELD_SIGNEDBITFIELD,
  974.     VAL_BITFIELD_UNSIGNEDBITFIELD
  975. };
  976.  
  977. enum
  978. {
  979.     VAL_CONSTSTRINGS_DEFAULT,
  980.     VAL_CONSTSTRINGS_STRINGSCONST,
  981.     VAL_CONSTSTRINGS_WRITEABLESTRINGS
  982. };
  983.  
  984. enum
  985. {
  986.     VAL_PROMOTEDOUBLE_DEFAULT,
  987.     VAL_PROMOTEDOUBLE_PROMOTETODOUBLE,
  988.     VAL_PROMOTEDOUBLE_ALLOWSINGLEPRECISION
  989. };
  990.  
  991. enum
  992. {
  993.     VAL_LINKER_LINK,
  994.     VAL_LINKER_NOLINK,
  995. };
  996.  
  997. enum
  998. {
  999.     VAL_STARTUPCODE_STARTUPCODE,
  1000.     VAL_STARTUPCODE_NOSTARTUPCODE
  1001. };
  1002.  
  1003. enum
  1004. {
  1005.     VAL_STDLIBS_STANDARDLIBS,
  1006.     VAL_STDLIBS_NOSTANDARDLIBS
  1007. };
  1008.  
  1009. enum
  1010. {
  1011.     VAL_DEFAULTLIBS_DEFAULTLIBS,
  1012.     VAL_DEFAULTLIBS_NODEFAULTLIBS
  1013. };
  1014.  
  1015. enum
  1016. {
  1017.     VAL_STRIPSYMBOLS_NOSTRIPSYMBOLS,
  1018.     VAL_STRIPSYMBOLS_STRIPSYMBOLS
  1019. };
  1020.  
  1021. enum
  1022. {
  1023.     VAL_DYNAMICLINKING_DYNAMICLINKING,
  1024.     VAL_DYNAMICLINKING_STATICLINKING
  1025. };
  1026.  
  1027. enum
  1028. {
  1029.     VAL_SHAREDOBJ_NOSHAREDOBJECT,
  1030.     VAL_SHAREDOBJ_SHAREDOBJECT
  1031. };
  1032.  
  1033. enum
  1034. {
  1035.     VAL_SYMBOLICREFS_NOSYMBOLICREFS,
  1036.     VAL_SYMBOLICREFS_SYMBOLICREFS
  1037. };
  1038.  
  1039. enum
  1040. {
  1041.     VAL_IXEMUL_IXEMUL,
  1042.     VAL_IXEMUL_LIBNIX
  1043. };
  1044.  
  1045. enum
  1046. {
  1047.     VAL_M68KFPU_NOFPU,
  1048.     VAL_M68KFPU_FPU68881
  1049. };
  1050.  
  1051. enum
  1052. {
  1053.     VAL_CPU_DEFAULT,
  1054.     VAL_CPU_CPU68000,
  1055.     VAL_CPU_CPU68020,
  1056.     VAL_CPU_CPU68030,
  1057.     VAL_CPU_CPU68040,
  1058.     VAL_CPU_CPU68060,
  1059.     VAL_CPU_CPU6802068040,
  1060.     VAL_CPU_CPU6802068060,
  1061.     VAL_CPU_POWERPC,
  1062.     VAL_CPU_601,
  1063.     VAL_CPU_602,
  1064.     VAL_CPU_603,
  1065.     VAL_CPU_603E,
  1066.     VAL_CPU_604,
  1067.     VAL_CPU_604E,
  1068.     VAL_CPU_620,
  1069.     VAL_CPU_740,
  1070.     VAL_CPU_750
  1071. };
  1072.  
  1073. enum
  1074. {
  1075.     VAL_M68KSOFTFLOAT_NOSOFTFLOAT,
  1076.     VAL_M68KSOFTFLOAT_SOFTFLOAT
  1077. };
  1078.  
  1079. enum
  1080. {
  1081.     VAL_M68KLONGINT_INT32BIT,
  1082.     VAL_M68KLONGINT_INT16BIT
  1083. };
  1084.  
  1085. enum
  1086. {
  1087.     VAL_M68KRTS_RETURNWITHRTS,
  1088.     VAL_M68KRTS_RETURNWITHRTD
  1089. };
  1090.  
  1091. enum
  1092. {
  1093.     VAL_M68KALIGN_DEFAULT,
  1094.     VAL_M68KALIGN_NO32BITALIGN,
  1095.     VAL_M68KALIGN_32BITALIGN
  1096. };
  1097.  
  1098. enum
  1099. {
  1100.     VAL_M68KFARCODE_CODEFAR,
  1101.     VAL_M68KFARCODE_CODENEAR
  1102. };
  1103.  
  1104. enum
  1105. {
  1106.     VAL_M68KFARDATA_DATADEFAULT,
  1107.     VAL_M68KFARDATA_DATAFAR,
  1108.     VAL_M68KFARDATA_DATANEAR16,
  1109.     VAL_M68KFARDATA_DATANEAR32,
  1110.     VAL_M68KFARDATA_DATARESIDENT16,
  1111.     VAL_M68KFARDATA_DATARESIDENT32
  1112. };
  1113.  
  1114. enum
  1115. {
  1116.     VAL_M68KSTACKCHECK_DEFAULT,
  1117.     VAL_M68KSTACKCHECK_NOSTACKCHECK,
  1118.     VAL_M68KSTACKCHECK_STACKCHECK
  1119. };
  1120.  
  1121. enum
  1122. {
  1123.     VAL_M68KSTACKEXTEND_DEFAULT,
  1124.     VAL_M68KSTACKEXTEND_NOSTACKEXTEND,
  1125.     VAL_M68KSTACKEXTEND_STACKEXTEND
  1126. };
  1127.  
  1128. enum
  1129. {
  1130.     VAL_M68KRELOADA4_DEFAULT,
  1131.     VAL_M68KRELOADA4_NORELOADA4,
  1132.     VAL_M68KRELOADA4_RELOADA4,
  1133.     VAL_M68KRELOADA4_ALWAYSRELOADA4
  1134. };
  1135.  
  1136. enum
  1137. {
  1138.     VAL_M68KPARMS_PARMSSTACK,
  1139.     VAL_M68KPARMS_PARMSREGISTERS,
  1140.     VAL_M68KPARMS_PARMSREGISTERS1,
  1141.     VAL_M68KPARMS_PARMSREGISTERS2,
  1142.     VAL_M68KPARMS_PARMSREGISTERS3,
  1143.     VAL_M68KPARMS_PARMSREGISTERS4
  1144. };
  1145.  
  1146. enum
  1147. {
  1148.     VAL_PEDANTIC_NOPEDANTIC,
  1149.     VAL_PEDANTIC_PEDANTIC,
  1150.     VAL_PEDANTIC_PEDANTICERRORS
  1151. };
  1152.  
  1153. enum
  1154. {
  1155.     VAL_WARNINGS_WARNINGS,
  1156.     VAL_WARNINGS_NOWARNINGS,
  1157.     VAL_WARNINGS_ALLWARNINGS
  1158. };
  1159.  
  1160. enum
  1161. {
  1162.     VAL_EXTRAWARNINGS_NOEXTRAWARNINGS,
  1163.     VAL_EXTRAWARNINGS_EXTRAWARNINGS
  1164. };
  1165.  
  1166. enum
  1167. {
  1168.     VAL_ABORT_NOABORT,
  1169.     VAL_ABORT_ABORT,
  1170. };
  1171.  
  1172. enum
  1173. {
  1174.     VAL_PERMISSIVECPP_DEFAULT,
  1175.     VAL_PERMISSIVECPP_NOPERMISSIVECPLUSPLUS,
  1176.     VAL_PERMISSIVECPP_PERMISSIVECPLUSPLUS
  1177. };
  1178.  
  1179. enum
  1180. {
  1181.     VAL_DIAGNOSTICS_OPTIONALDIAGNOSTICS,
  1182.     VAL_DIAGNOSTICS_NOOPTDIAGNOSTICS
  1183. };
  1184.  
  1185. enum
  1186. {
  1187.     VAL_FASTCONSTRUCTOR_DEFAULT,
  1188.     VAL_FASTCONSTRUCTOR_FASTCONSTRUCTOR,
  1189.     VAL_FASTCONSTRUCTOR_COPYCONSTRUCTOR
  1190. };
  1191.  
  1192. enum
  1193. {
  1194.     VAL_IMPLICITETEMPLATES_DEFAULT,
  1195.     VAL_IMPLICITETEMPLATES_IMPLICITETEMPLATES,
  1196.     VAL_IMPLICITETEMPLATES_NOIMPLICITETEMPLATES
  1197. };
  1198.  
  1199. enum
  1200. {
  1201.     VAL_OPTIMIZER_DEFAULT,
  1202.     VAL_OPTIMIZER_OPTIMIZE,
  1203.     VAL_OPTIMIZER_OPTIMIZEMORE,
  1204.     VAL_OPTIMIZER_OPTIMIZEEVENMORE,
  1205.     VAL_OPTIMIZER_OPTIMIZESIZE,
  1206.     VAL_OPTIMIZER_NOOPTIMIZE
  1207. };
  1208.  
  1209. enum
  1210. {
  1211.     VAL_FLOATSINFPU_DEFAULT,
  1212.     VAL_FLOATSINFPU_STOREFLOATSINFPU,
  1213.     VAL_FLOATSINFPU_STOREFLOATSINRAM
  1214. };
  1215.  
  1216. enum
  1217. {
  1218.     VAL_DEFERPOP_DEFAULT,
  1219.     VAL_DEFERPOP_DEFERPOP,
  1220.     VAL_DEFERPOP_NODEFERPOP
  1221. };
  1222.  
  1223. enum
  1224. {
  1225.     VAL_COPYOPERANDS_DEFAULT,
  1226.     VAL_COPYOPERANDS_NOCOPYOPERANDS,
  1227.     VAL_COPYOPERANDS_COPYOPERANDS,
  1228. };
  1229.  
  1230. enum
  1231. {
  1232.     VAL_COPYPOINTERS_DEFAULT,
  1233.     VAL_COPYPOINTERS_NOCOPYPOINTERS,
  1234.     VAL_COPYPOINTERS_COPYPOINTERS
  1235. };
  1236.  
  1237. enum
  1238. {
  1239.     VAL_FRAMEPOINTER_DEFAULT,
  1240.     VAL_FRAMEPOINTER_FRAMEPOINTER,
  1241.     VAL_FRAMEPOINTER_OPTIMIZEFRAMEPTR
  1242. };
  1243.  
  1244. enum
  1245. {
  1246.     VAL_FASTMATH_DEFAULT,
  1247.     VAL_FASTMATH_NOFASTMATH,
  1248.     VAL_FASTMATH_FASTMATH
  1249. };
  1250.  
  1251. enum
  1252. {
  1253.     VAL_SAVEREGISTERS_DEFAULT,
  1254.     VAL_SAVEREGISTERS_NOSAVEREGISTERS,
  1255.     VAL_SAVEREGISTERS_SAVEREGISTERS
  1256. };
  1257.  
  1258. enum
  1259. {
  1260.     VAL_PEEPHOLE_DEFAULT,
  1261.     VAL_PEEPHOLE_PEEPHOLEOPTIMIZER,
  1262.     VAL_PEEPHOLE_NOPEEPHOLEOPTIMIZER
  1263. };
  1264.  
  1265. enum
  1266. {
  1267.     VAL_SCHEDULER_DEFAULT,
  1268.     VAL_SCHEDULER_NOSCHEDULER,
  1269.     VAL_SCHEDULER_SCHEDULER,
  1270.     VAL_SCHEDULER_TWOPASSSCHEDULER
  1271. };
  1272.  
  1273. enum
  1274. {
  1275.     VAL_EXPENSIVEOPT_DEFAULT,
  1276.     VAL_EXPENSIVEOPT_NOEXPENSIVEOPT,
  1277.     VAL_EXPENSIVEOPT_EXPENSIVEOPT
  1278. };
  1279.  
  1280. enum
  1281. {
  1282.     VAL_ALIASING_DEFAULT,
  1283.     VAL_ALIASING_NOSTRICTALIASING,
  1284.     VAL_ALIASING_STRICTALIASING
  1285. };
  1286.  
  1287. enum
  1288. {
  1289.     VAL_PPCBITALIGN_DEFAULT,
  1290.     VAL_PPCBITALIGN_BITALIGN,
  1291.     VAL_PPCBITALIGN_NOBITALIGN
  1292. };
  1293.  
  1294. enum
  1295. {
  1296.     VAL_PPCRELOCATABLE_DEFAULT,
  1297.     VAL_PPCRELOCATABLE_NORELOCATABLE,
  1298.     VAL_PPCRELOCATABLE_RELOCATBALE
  1299. };
  1300.  
  1301. enum
  1302. {
  1303.     VAL_PPCFULLTOC_DEFAULT,
  1304.     VAL_PPCFULLTOC_FULLTOC,
  1305.     VAL_PPCFULLTOC_MINIMALTOC,
  1306. };
  1307.  
  1308. enum
  1309. {
  1310.     VAL_PPCFMADD_DEFAULT,
  1311.     VAL_PPCFMADD_USEFMADDFMSUB,
  1312.     VAL_PPCFMADD_NOUSEFMADDFMSUB
  1313. };
  1314.  
  1315. enum
  1316. {
  1317.     VAL_PPCABI_DEFAULT,
  1318.     VAL_PPCABI_32BITABI,
  1319.     VAL_PPCABI_64BITABI
  1320. };
  1321.  
  1322. enum
  1323. {
  1324.     VAL_PPCFPU_DEFAULT,
  1325.     VAL_PPCFPU_FPU,
  1326.     VAL_PPCFPU_NOFPU
  1327. };
  1328.  
  1329. enum
  1330. {
  1331.     VAL_PPCSTRICTALIGN_DEFAULT,
  1332.     VAL_PPCSTRICTALIGN_STRICTALIGN,
  1333.     VAL_PPCSTRICTALIGN_NOSTRICTALIGN
  1334. };
  1335.  
  1336. enum
  1337. {
  1338.     VAL_PPCRELOCATABLELIB_DEFAULT,
  1339.     VAL_PPCRELOCATABLELIB_NORELOCATABLELIB,
  1340.     VAL_PPCRELOCATABLELIB_RELOCATABLELIB
  1341. };
  1342.  
  1343. enum
  1344. {
  1345.     VAL_PPCTOC_DEFAULT,
  1346.     VAL_PPCTOC_TOC,
  1347.     VAL_PPCTOC_NOTOC
  1348. };
  1349.  
  1350. enum
  1351. {
  1352.     VAL_PPCENDIAN_DEFAULT,
  1353.     VAL_PPCENDIAN_LITTLEENDIAN,
  1354.     VAL_PPCENDIAN_BIGENDIAN
  1355. };
  1356.  
  1357. enum
  1358. {
  1359.     VAL_PPCCALL_DEFAULT,
  1360.     VAL_PPCCALL_CALLSSYSIV,
  1361.     VAL_PPCCALL_CALLSAIX,
  1362.     VAL_PPCCALL_CALLSLINUX,
  1363.     VAL_PPCCALL_CALLSSOLARIS
  1364. };
  1365.  
  1366. enum
  1367. {
  1368.     VAL_PPCPROTOTYPED_DEFAULT,
  1369.     VAL_PPCPROTOTYPED_PROTOTYPED,
  1370.     VAL_PPCPROTOTYPED_NOPROTOTYPED
  1371. };
  1372.  
  1373. enum
  1374. {
  1375.     VAL_PPCEABI_DEFAULT,
  1376.     VAL_PPCEABI_EMBEDDEDABI,
  1377.     VAL_PPCEABI_NOEMBEDDEDABI
  1378. };
  1379.  
  1380. enum
  1381. {
  1382.     VAL_PPCDATA_DEFAULT,
  1383.     VAL_PPCDATA_DATADEFAULT,
  1384.     VAL_PPCDATA_DATAEABI,
  1385.     VAL_PPCDATA_DATASYSV,
  1386.     VAL_PPCDATA_DATANONE
  1387. };
  1388.  
  1389. enum
  1390. {
  1391.     VAL_STRIPCOMMENTS_STRIPCOMMENTS,
  1392.     VAL_STRIPCOMMENTS_NOSTRIPCOMMENTS
  1393. };
  1394.  
  1395. enum
  1396. {
  1397.     VAL_DEFINEMACROS_DEFINEMACROS,
  1398.     VAL_DEFINEMACROS_NODEFINEMACROS
  1399. };
  1400.  
  1401. enum
  1402. {
  1403.     VAL_LINENUMBERS_GENLINENUMBERS,
  1404.     VAL_LINENUMBERS_NOGENLINENUMBERS
  1405. };
  1406.  
  1407. enum
  1408. {
  1409.     VAL_TRADITIONALCPP_NOTRADITIONALCPP,
  1410.     VAL_TRADITIONALCPP_TRADIONALCPP
  1411. };
  1412.  
  1413. #endif
  1414.  
  1415. ///
  1416. /// "defines (vbcc)"
  1417.  
  1418. #ifdef TARGET_VBCC
  1419.  
  1420. // page identifiers (WindowSupportInfo->Page)
  1421.  
  1422. enum PAGE_ID
  1423. {
  1424.     PAGE_INDEX,
  1425.     PAGE_COMPILER,
  1426.     PAGE_MESSAGES,
  1427.     PAGE_CODE,
  1428.     PAGE_OPTIMIZER,
  1429.     PAGE_LINKER,
  1430.     PAGE_SPECIAL,
  1431.     PAGE_PPC,
  1432.  
  1433.     // pages end here
  1434.  
  1435.     PAGE_MAXIMUM
  1436. };
  1437.  
  1438. // supported options
  1439.  
  1440. enum VBCC_OPTIONS
  1441. {
  1442.     OPTION_ALIGNSTACK,
  1443.     OPTION_AMIGAALIGN,
  1444.     OPTION_ANSI,
  1445.     OPTION_ASSEMBLE,
  1446.     OPTION_ASSOZIATIVEFP,
  1447.     OPTION_C99,
  1448.     OPTION_CONST,
  1449.     OPTION_COPYRIGHT,
  1450.     OPTION_CPPCOMMENTS,
  1451.     OPTION_CPU,
  1452.     OPTION_DEBUG,
  1453.     OPTION_DEBUGHUNK,
  1454.     OPTION_DEFINES,
  1455.     OPTION_DISABLED,
  1456.     OPTION_DOUBLEPUSH,
  1457.     OPTION_ELF,
  1458.     OPTION_EMBEDDEDABI,
  1459.     OPTION_ENABLED,
  1460.     OPTION_EXTRALIB,
  1461.     OPTION_FMADD,
  1462.     OPTION_FSUBZERO,
  1463.     OPTION_HIDEPATH,
  1464.     OPTION_INCLUDES,
  1465.     OPTION_INDERMEDIATE,
  1466.     OPTION_INLINESIZE,
  1467.     OPTION_ISO,
  1468.     OPTION_LARGECODE,
  1469.     OPTION_LARGEDATA,
  1470.     OPTION_LIBPATHS,
  1471.     OPTION_LINK,
  1472.     OPTION_LMW,
  1473.     OPTION_MATH,
  1474.     OPTION_MAXERRORS,
  1475.     OPTION_MEMSIZE,
  1476.     OPTION_MERGEFPCONST,
  1477.     OPTION_OBJECTS,
  1478.     OPTION_OPTIMIZE,
  1479.     OPTION_OPTIMIZEALIAS,
  1480.     OPTION_OPTIMIZEINLINE,
  1481.     OPTION_OPTIMIZEPEEPHOLE,
  1482.     OPTION_OPTIMIZESCHEDULE,
  1483.     OPTION_OPTIMIZESIZE,
  1484.     OPTION_OPTIMIZESPEED,
  1485.     OPTION_OPTIONS,
  1486.     OPTION_POWEROPEN,
  1487.     OPTION_PREPROCESSED,
  1488.     OPTION_PROFILE,
  1489.     OPTION_REGISTERNAMES,
  1490.     OPTION_RODATA,
  1491.     OPTION_SETCCS,
  1492.     OPTION_STACKCHECK,
  1493.     OPTION_STDLIB,
  1494.     OPTION_UNROLLALL,
  1495.     OPTION_UNROLLSIZE,
  1496.     OPTION_VCCONFIG,
  1497.     OPTION_VERBOSE,
  1498.     OPTION_WARNINGS,
  1499.  
  1500.     // options end here
  1501.  
  1502.     OPTIONS_MAXIMUM
  1503. };
  1504.  
  1505. // possible values for various options
  1506.  
  1507. enum
  1508. {
  1509.     OPTION_VERBOSE_NOVERBOSE,
  1510.     OPTION_VERBOSE_VERBOSE,
  1511.     OPTION_VERBOSE_VERYVERBOSE
  1512. };
  1513.  
  1514. enum
  1515. {
  1516.     OPTION_COPYRIGHT_COPYRIGHT,
  1517.     OPTION_COPYRIGHT_NOCOPYRIGHT,
  1518. };
  1519.  
  1520. enum
  1521. {
  1522.     OPTION_DEBUG_NODEBUG,
  1523.     OPTION_DEBUG_DEBUG
  1524. };
  1525.  
  1526. enum
  1527. {
  1528.     OPTION_DEBUGHUNK_DEBUGHUNKDWARF2,
  1529.     OPTION_DEBUGHUNK_DEBUGHUNKAMIGA
  1530. };
  1531.  
  1532. enum
  1533. {
  1534.     OPTION_CPPCOMMENTS_NOCPPCOMMENTS,
  1535.     OPTION_CPPCOMMENTS_CPPCOMMENTS
  1536. };
  1537.  
  1538. enum
  1539. {
  1540.     OPTION_C99_ISOC1989,
  1541.     OPTION_C99_ISOC1999
  1542. };
  1543.  
  1544. enum
  1545. {
  1546.     OPTION_PREPROCESSED_NOPREPROCESSED,
  1547.     OPTION_PREPROCESSED_KEEPPREPROCESSED
  1548. };
  1549.  
  1550. enum
  1551. {
  1552.     OPTION_ASSEMBLE_ASSEMBLE,
  1553.     OPTION_ASSEMBLE_NOASSEMBLE
  1554. };
  1555.  
  1556. enum
  1557. {
  1558.     OPTION_INTERMEDIATE_NOINTERMEDIATE,
  1559.     OPTION_INTERMEDIATE_KEEPINTERMEDIATE
  1560. };
  1561.  
  1562. enum
  1563. {
  1564.     OPTION_MEMSIZE_MEMSIZEHUGE,
  1565.     OPTION_MEMSIZE_MEMSIZESMALL
  1566. };
  1567.  
  1568. enum
  1569. {
  1570.     OPTION_ANSI_NOANSI,
  1571.     OPTION_ANSI_ANSI
  1572. };
  1573.  
  1574. enum
  1575. {
  1576.     OPTION_ISO_NOISO,
  1577.     OPTION_ISO_ISO
  1578. };
  1579.  
  1580. enum
  1581. {
  1582.     OPTION_HIDEPATH_FULLFILENAMES,
  1583.     OPTION_HIDEPATH_HIDEPATHPART
  1584. };
  1585.  
  1586. enum
  1587. {
  1588.     OPTION_LARGEDATA_LARGEDATA,
  1589.     OPTION_LARGEDATA_SMALLDATA
  1590. };
  1591.  
  1592. enum
  1593. {
  1594.     OPTION_LARGECODE_LARGECODE,
  1595.     OPTION_LARGECODE_SMALLCODE
  1596. };
  1597.  
  1598. enum
  1599. {
  1600.     OPTION_MATH_NOMATH,
  1601.     OPTION_MATH_ANY,
  1602.     OPTION_MATH_IEEE,
  1603.     OPTION_MATH_68881,
  1604.     OPTION_MATH_68040
  1605. };
  1606.  
  1607. enum
  1608. {
  1609.     OPTION_CPU_ANY,
  1610.     OPTION_CPU_68010,
  1611.     OPTION_CPU_68020,
  1612.     OPTION_CPU_68030,
  1613.     OPTION_CPU_68040,
  1614.     OPTION_CPU_68060
  1615. };
  1616.  
  1617. enum
  1618. {
  1619.     OPTION_STACKCHECK_NOSTACKCHECK,
  1620.     OPTION_STACKCHECK_STACKCHECK
  1621. };
  1622.  
  1623. enum
  1624. {
  1625.     OPTION_PROFILE_NOPROFILE,
  1626.     OPTION_PROFILE_PROFILE
  1627. };
  1628.  
  1629. enum
  1630. {
  1631.     OPTION_DOUBLEPUSH_NODOUBLEPUSH,
  1632.     OPTION_DOUBLEPUSH_DOUBLEPUSH
  1633. };
  1634.  
  1635. enum
  1636. {
  1637.     OPTION_CONST_CONSTDATACODE,
  1638.     OPTION_CONST_CONSTDATADATA
  1639. };
  1640.  
  1641. enum
  1642. {
  1643.     OPTION_OPTIMIZE_NOOPTIMIZE,
  1644.     OPTION_OPTIMIZE_OPTIMIZESOME,
  1645.     OPTION_OPTIMIZE_OPTIMIZEMOST,
  1646.     OPTION_OPTIMIZE_OPTIMIZEALL,
  1647.     OPTION_OPTIMIZE_OPTIMIZECROSSMODULE
  1648. };
  1649.  
  1650. enum
  1651. {
  1652.     OPTION_OPTIMIZEPEEPHOLE_OPTIMIZEPEEPHOLE,
  1653.     OPTION_OPTIMIZEPEEPHOLE_NOOPTIMIZEPEEPHOLE,
  1654. };
  1655.  
  1656. enum
  1657. {
  1658.     OPTION_OPTIMIZEINLINE_OPTIMIZEINLINE,
  1659.     OPTION_OPTIMIZEINLINE_NOOPTIMIZEINLINE
  1660. };
  1661.  
  1662. enum
  1663. {
  1664.     OPTION_OPTIMIZESCHEDULE_NOOPTIMIZESCHEDULE,
  1665.     OPTION_OPTIMIZESCHEDULE_OPTIMIZESCHEDULE
  1666. };
  1667.  
  1668. enum
  1669. {
  1670.     OPTION_OPTIMIZESIZE_NOOPTIMIZESIZE,
  1671.     OPTION_OPTIMIZESIZE_OPTIMIZESIZE
  1672. };
  1673.  
  1674. enum
  1675. {
  1676.     OPTION_OPTIMIZESPEED_NOOPTIMIZESPEED,
  1677.     OPTION_OPTIMIZESPEED_OPTIMIZESPEED
  1678. };
  1679.  
  1680. enum
  1681. {
  1682.     OPTION_UNROLLALL_NOUNROLLALL,
  1683.     OPTION_UNROLLALL_UNROLLALL
  1684. };
  1685.  
  1686. enum
  1687. {
  1688.     OPTION_ASSOZIATIVEFP_NOASSOZIATIVEFP,
  1689.     OPTION_ASSOZIATIVEFP_ASSOZIATIVEFP
  1690. };
  1691.  
  1692. enum
  1693. {
  1694.     OPTION_OPTIMIZEALIAS_OPTIMIZEALIAS,
  1695.     OPTION_OPTIMIZEALIAS_NOOPTIMIZEALIAS
  1696. };
  1697.  
  1698. enum
  1699. {
  1700.     OPTION_LINK_LINK,
  1701.     OPTION_LINK_NOLINK
  1702. };
  1703.  
  1704. enum
  1705. {
  1706.     OPTION_STDLIB_STDLIB,
  1707.     OPTION_STDLIB_NOSTDLIB
  1708. };
  1709.  
  1710. enum
  1711. {
  1712.     OPTION_EXTRALIB_NOEXTRALIB,
  1713.     OPTION_EXTRALIB_EXTRALIB
  1714. };
  1715.  
  1716. enum
  1717. {
  1718.     OPTION_WARNINGS_WARNINGS,
  1719.     OPTION_WARNINGS_ALLWARNINGSON,
  1720.     OPTION_WARNINGS_ALLWARNINGSOFF
  1721. };
  1722.  
  1723. enum
  1724. {
  1725.     OPTION_MERGEFPCONST_NOMERGECONST,
  1726.     OPTION_MERGEFPCONST_MERGECONSTANTS
  1727. };
  1728.  
  1729. enum
  1730. {
  1731.     OPTION_RODATA_CONSTINRODATA,
  1732.     OPTION_RODATA_CONSTINDATA
  1733. };
  1734.  
  1735. enum
  1736. {
  1737.    OPTION_FSUBZERO_NOFSUBZERO,
  1738.    OPTION_FSUBZERO_FSUBZERO
  1739. };
  1740.  
  1741. enum
  1742. {
  1743.    OPTION_AMIGAALIGN_NOAMIGAALIGN,
  1744.    OPTION_AMIGAALIGN_AMIGAALIGN
  1745. };
  1746.  
  1747. enum
  1748. {
  1749.    OPTION_ELF_NOELF,
  1750.    OPTION_ELF_PREFIXELF
  1751. };
  1752.  
  1753. enum
  1754. {
  1755.    OPTION_POWEROPEN_NOPOWEROPENABI,
  1756.    OPTION_POWEROPEN_POWEROPENABI,
  1757.    OPTION_POWEROPEN_POWEROPENABISTORMC
  1758. };
  1759.  
  1760. enum
  1761. {
  1762.    OPTION_REGISTERNAMES_USEREGISTERNAMES,
  1763.    OPTION_REGISTERNAMES_NOREGISTERNAMES,
  1764. };
  1765.  
  1766. enum
  1767. {
  1768.    OPTION_SETCCS_NOCCSSIGNAL,
  1769.    OPTION_SETCCS_SETCCSSIGNAL
  1770. };
  1771.  
  1772. enum
  1773. {
  1774.    OPTION_LMW_NOLMWSTMW,
  1775.    OPTION_LMW_USELMWSTMW
  1776. };
  1777.  
  1778. enum
  1779. {
  1780.    OPTION_FMADD_NOFMADDFMSUB,
  1781.    OPTION_FMADD_USEFMADDFMSUB
  1782. };
  1783.  
  1784. enum
  1785. {
  1786.    OPTION_EMBEDDEDABI_NOEMBEDDEDABI,
  1787.    OPTION_EMBEDDEDABI_EMBEDDEDABI
  1788. };
  1789.  
  1790. enum
  1791. {
  1792.    OPTION_ALIGNSTACK_ALIGNSTACK,
  1793.    OPTION_ALIGNSTACK_NOALIGNSTACK
  1794. };
  1795.  
  1796. #endif
  1797.  
  1798. ///
  1799. /// "structures"
  1800.  
  1801. /* ------------------------------- Connectivity --------------------------------
  1802.  
  1803.  The connectivity table (struct Connectivity[]) describes how gadgets interact
  1804.  
  1805. */
  1806.  
  1807. struct Connectivity
  1808. {
  1809.     UWORD                Page;                       // dialog page; see PAGE_ID
  1810.     UWORD                GadgetID;                   // gadget ID
  1811.     UWORD                TargetID;                   // gadget ID of associated listview
  1812.     UWORD                Action;                     // see GADGET_ACTION
  1813. };
  1814.  
  1815. /* -----------------------------------------------------------------------------
  1816.  
  1817.  A syntax structure table is used to describe all options understood by this
  1818.  program, their default values, associated gadgets etc.
  1819.  
  1820. */
  1821.  
  1822. struct Syntax
  1823. {
  1824.     UWORD                ID;                         // option ID; see GCC_OPTIONS
  1825.     UWORD                Type;                       // option type; see VALUE_TYPE
  1826.     UWORD                Value;                      // default numerical value
  1827.     UWORD                Page;                       // page; see PAGE_ID
  1828.     UWORD                GadgetID;                   // gadget ID
  1829.     UWORD                GadgetType;                 // gadget type
  1830.     UBYTE               *Template;                   // template (or NULL)
  1831.     UWORD                TemplateValue;              // value associated with template
  1832.     UWORD                Flags;                      // flags (see below)
  1833.     UBYTE               *Enable;                     // activator
  1834.     UBYTE               *Disable;                    // deactivator
  1835.     UWORD                Status;                     // rule status
  1836. };
  1837.  
  1838. // possible values for Syntax->Flags
  1839.  
  1840. #define RULE_DONOTSAVE     (1L<<0)                   // do not use rule for saving
  1841.  
  1842. /* ----------------------------------- Value -----------------------------------
  1843.  
  1844.  Value structures hold the numerical/list/string value of options. Note that NULL
  1845.  is perfectly valid in Value->String ("empty string").
  1846.  
  1847. */
  1848.  
  1849. struct Value
  1850. {
  1851.     UWORD                Type;                       // option type; see VALUE_TYPE
  1852.     UWORD                Number;                     // value (if Type==VALUE_NUMBER)
  1853.     UBYTE               *String;                     // value (if Type==VALUE_STRING)
  1854.     struct List          List;                       // value (if Type==VALUE_LIST)
  1855. };
  1856.  
  1857. /* ---------------------------------- Options ----------------------------------
  1858.  
  1859.  Complete set of compiler options
  1860.  
  1861. */
  1862.  
  1863. struct Options
  1864. {
  1865.     struct Value         Values[OPTIONS_MAXIMUM];
  1866. };
  1867.  
  1868. /* ---------------------------------- Config -----------------------------------
  1869.  
  1870.  Global configuration
  1871.  
  1872. */
  1873.  
  1874. struct Config
  1875. {
  1876.     struct Menu         *Menu;                       // main menu
  1877.     struct List          Windows;                    // windows
  1878.     struct BoopsiContext Context;                    // gadget class root
  1879.     struct BoopsiDevice *Device;                     // gadget class device
  1880.     struct Options       Options;                    // compiler options
  1881.     UBYTE                Pubscreen[MAX_SCREEN  + 1]; // screen name
  1882.     UBYTE                File     [MAX_PATHLEN + 1]; // options file
  1883. };
  1884.  
  1885. /* ----------------------------- WindowSupportInfo -----------------------------
  1886.  
  1887.  Window-related information
  1888.  
  1889. */
  1890.  
  1891. struct WindowSupportInfo
  1892. {
  1893.     struct Node          Node;                       // it's a linked list
  1894.     struct Window       *Window;                     // window handle
  1895.     struct Gadget       *Context;                    // gadget context
  1896.     struct Options      *Options;                    // options attached to window
  1897.     UWORD                Gadgets;                    // gadgets
  1898.     struct Gadget       *GadgetPtr[MAX_GADGETS];     // gadgets
  1899.     UWORD                Page;                       // current page
  1900.     struct PageLayout   *Layout;                     // current layout
  1901.     struct TextAttr      TextAttr;                   // dialog layout info
  1902.     UWORD                FontX;                      // dialog layout info
  1903.     UWORD                FontY;                      // dialog layout info
  1904.     UWORD                OffX;                       // dialog layout info
  1905.     UWORD                OffY;                       // dialog layout info
  1906.     UWORD                WinW;                       // dialog layout info
  1907.     UWORD                WinH;                       // dialog layout info
  1908. };
  1909.  
  1910. /* -------------------------------- PageLayout ---------------------------------
  1911.  
  1912.  Page layout
  1913.  
  1914. */
  1915.  
  1916. struct PageLayout
  1917. {
  1918.     UWORD                Gadgets;                    // number of gadgets
  1919.     ULONG               *Tags;                       // array with gadget tags
  1920.     UWORD               *Types;                      // array with gadget types
  1921.     struct NewGadget    *NewGadget;                  // array with gadget data
  1922.     struct IntuiText    *IntuiText;                  // array with strings
  1923. };
  1924.  
  1925. ///
  1926. /// "globals"
  1927.  
  1928. extern struct Library   *AslBase;
  1929. extern struct Library   *DiskfontBase;
  1930. extern struct Library   *DOSBase;
  1931. extern struct Library   *GadToolsBase;
  1932. extern struct Library   *GfxBase;
  1933. extern struct Library   *SysBase;
  1934. extern struct Library   *UtilityBase;
  1935. extern struct Config     Config;
  1936. extern struct Syntax     Syntax[];
  1937. extern struct NewMenu    NewMenu[];
  1938. extern UBYTE            *SuggestionsForWarnings[];
  1939.  
  1940. ///
  1941.